LEADTOOLS Medical (Leadtools.Dicom assembly)
LEAD Technologies, Inc

SetModalityLut(DicomModalityLutAttributes,Int32[]) Method

Example 







The Modality LUT attributes to set.
Array of integers that holds the "LUT Data".
Sets the attributes that describe the Modality LUT. .NET support WinRT support Silverlight support
Syntax
public void SetModalityLut( 
   DicomModalityLutAttributes attributes,
   int[] data
)
'Declaration
 
Public Overloads Sub SetModalityLut( _
   ByVal attributes As DicomModalityLutAttributes, _
   ByVal data() As Integer _
) 
'Usage
 
Dim instance As DicomDataSet
Dim attributes As DicomModalityLutAttributes
Dim data() As Integer
 
instance.SetModalityLut(attributes, data)
public void SetModalityLut( 
   DicomModalityLutAttributes attributes,
   int[] data
)
ObjectiveC Syntax
 function Leadtools.Dicom.DicomDataSet.SetModalityLut(DicomModalityLutAttributes,Int32[])( 
   attributes ,
   data 
)
public:
void SetModalityLut( 
   DicomModalityLutAttributes^ attributes,
   array<int>^ data
) 

Parameters

attributes
The Modality LUT attributes to set.
data
Array of integers that holds the "LUT Data".
Remarks
This method will set the attributes of the "Modality LUT Module".

If you are trying to set the "Rescale Intercept" (0028,1052) and "Rescale Slope" (0028,1053), set IsRescaleSlopeIntercept to true, and populate RescaleIntercept and DicomModalityLutAttributes.RescaleSlope with the new values. You can also populate RescaleType if you want to set "Rescale Type" (0028,1054).

If you are trying to set the elements under "Modality LUT Sequence", set IsModalityLutSequence to true, and populate FirstStoredPixelValueMapped, NumberOfEntries, EntryBits, and LutType. In this case, data should hold the "LUT Data" (0028,3006).

Example
Copy CodeCopy Code  
Public Sub TestSetModalityLut()
      Dim dicomFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "IMAGE3.dcm")
      'Make sure to initialize the DICOM engine, this needs to be done only once 
      'In the whole application
      DicomEngine.Startup()

      Dim ds As DicomDataSet = New DicomDataSet()
      Using (ds)
         'Load DICOM File
         ds.Load(dicomFileName, DicomDataSetLoadFlags.None)
         Dim modalityLutAttributes As DicomModalityLutAttributes = New DicomModalityLutAttributes()
         'No Modality LUT Sequence (0028,3000) 
         modalityLutAttributes.IsModalityLutSequence = False
         'Yes there is a rescale slope and intercept
         modalityLutAttributes.IsRescaleSlopeIntercept = True
         modalityLutAttributes.RescaleIntercept = -128.0
         modalityLutAttributes.RescaleSlope = 1.0
         modalityLutAttributes.RescaleType = "UNSPECIFIED"
         ' Delete the existing modality LUT, 
         ' although we don't have to ! 
         ds.DeleteModalityLut()
         'Set rescale slope and intercept
         ds.SetModalityLut(modalityLutAttributes, Nothing)
         ds.Save(Path.Combine(LEAD_VARS.ImagesDir, "MLUT.dcm"), DicomDataSetSaveFlags.None)
      End Using

      DicomEngine.Shutdown()
   End Sub

Public NotInheritable Class LEAD_VARS
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
public void TestSetModalityLut()
   {
      string dicomFileName = Path.Combine(LEAD_VARS.ImagesDir, "IMAGE3.dcm");
      //Make sure to initialize the DICOM engine, this needs to be done only once 
      //In the whole application
      DicomEngine.Startup();
      using (DicomDataSet ds = new DicomDataSet())
      {
         //Load DICOM File
         ds.Load(dicomFileName, DicomDataSetLoadFlags.None);
         DicomModalityLutAttributes modalityLutAttributes = new DicomModalityLutAttributes();
         //No Modality LUT Sequence (0028,3000) 
         modalityLutAttributes.IsModalityLutSequence = false;
         //Yes there is a rescale slope and intercept
         modalityLutAttributes.IsRescaleSlopeIntercept = true;
         modalityLutAttributes.RescaleIntercept = -128.0;
         modalityLutAttributes.RescaleSlope = 1.0;
         modalityLutAttributes.RescaleType = "UNSPECIFIED";
         // Delete the existing modality LUT, 
         // although we don't have to ! 
         ds.DeleteModalityLut();
         //Set rescale slope and intercept
         ds.SetModalityLut(modalityLutAttributes, null);
         ds.Save(Path.Combine(LEAD_VARS.ImagesDir, "MLUT.dcm"), DicomDataSetSaveFlags.None);
      }
      DicomEngine.Shutdown();
   }

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
[TestMethod]
public async Task TestSetModalityLut()
{
   //Make sure to initialize the DICOM engine, this needs to be done only once 
   //In the whole application
   DicomEngine.Startup();
   using (DicomDataSet ds = new DicomDataSet())
   {
      //Load DICOM File
      string filePath = @"Assets\IMAGE3.dcm";
      StorageFile file = await Tools.AppInstallFolder.GetFileAsync(filePath);
      ILeadStream stream = LeadStreamFactory.Create(file);
      bool success = await ds.LoadAsync(stream, DicomDataSetLoadFlags.None);
      Debug.Assert(success);
      DicomModalityLutAttributes modalityLutAttributes = new DicomModalityLutAttributes();
      //No Modality LUT Sequence (0028,3000) 
      modalityLutAttributes.IsModalityLutSequence = false;
      //Yes there is a rescale slope and intercept
      modalityLutAttributes.IsRescaleSlopeIntercept = true;
      modalityLutAttributes.RescaleIntercept = -128.0;
      modalityLutAttributes.RescaleSlope = 1.0;
      modalityLutAttributes.RescaleType = "UNSPECIFIED";
      // Delete the existing modality LUT, 
      // although we don't have to ! 
      ds.DeleteModalityLut();
      //Set rescale slope and intercept
      ds.SetModalityLut(modalityLutAttributes, null);
      string dicomFileNameOutput = "MLUT.dcm";
      StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(dicomFileNameOutput);
      ILeadStream streamOutput = LeadStreamFactory.Create(saveFile);
      using (IDisposable disposableOUT = streamOutput as IDisposable)
      {
         await ds.SaveAsync(streamOutput, DicomDataSetSaveFlags.None);
      }
   }
   DicomEngine.Shutdown();
}
public void TestSetModalityLut(Stream dicomStream, Stream outputStream)
{
   //Make sure to initialize the DICOM engine, this needs to be done only once 
   //In the whole application
   DicomEngine.Startup();
   using (DicomDataSet ds = new DicomDataSet())
   {
      //Load DICOM File
      ds.Load(dicomStream, DicomDataSetLoadFlags.None);
      DicomModalityLutAttributes modalityLutAttributes = new DicomModalityLutAttributes();
      //No Modality LUT Sequence (0028,3000) 
      modalityLutAttributes.IsModalityLutSequence = false;
      //Yes there is a rescale slope and intercept
      modalityLutAttributes.IsRescaleSlopeIntercept = true;
      modalityLutAttributes.RescaleIntercept = -128.0;
      modalityLutAttributes.RescaleSlope = 1.0;
      modalityLutAttributes.RescaleType = "UNSPECIFIED";
      // Delete the existing modality LUT, 
      // although we don't have to ! 
      ds.DeleteModalityLut();
      //Set rescale slope and intercept
      ds.SetModalityLut(modalityLutAttributes, null);
      ds.Save(outputStream, DicomDataSetSaveFlags.None);
   }
   DicomEngine.Shutdown();
}
Public Sub TestSetModalityLut(ByVal dicomStream As Stream, ByVal outputStream As Stream)
   'Make sure to initialize the DICOM engine, this needs to be done only once 
   'In the whole application
   DicomEngine.Startup()
   Using ds As DicomDataSet = New DicomDataSet()
      'Load DICOM File
      ds.Load(dicomStream, DicomDataSetLoadFlags.None)
      Dim modalityLutAttributes As DicomModalityLutAttributes = New DicomModalityLutAttributes()
      'No Modality LUT Sequence (0028,3000) 
      modalityLutAttributes.IsModalityLutSequence = False
      'Yes there is a rescale slope and intercept
      modalityLutAttributes.IsRescaleSlopeIntercept = True
      modalityLutAttributes.RescaleIntercept = -128.0
      modalityLutAttributes.RescaleSlope = 1.0
      modalityLutAttributes.RescaleType = "UNSPECIFIED"
      ' Delete the existing modality LUT, 
      ' although we don't have to ! 
      ds.DeleteModalityLut()
      'Set rescale slope and intercept
      ds.SetModalityLut(modalityLutAttributes, Nothing)
      ds.Save(outputStream, DicomDataSetSaveFlags.None)
   End Using
   DicomEngine.Shutdown()
End Sub
Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

DicomDataSet Class
DicomDataSet Members
Overload List
GetModalityLutData Method
GetModalityLutAttributes Method
DeleteModalityLut Method

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.

Leadtools.Dicom requires a Medical toolkit server license and unlock key. For more information, refer to: Imaging Pro/Document/Medical Features